const jwt = require('jsonwebtoken')

const { createUser,getUserInfo,updateById } = require('../service/user.service')
const {userRegisterError} = require('../constants/err.type')
const {JWT_SECRET} = require('../config/config.default')

class UserController{
    async register(ctx,next){
        // 获取数据
        console.log(ctx.request.body)
        const { user_name, password } = ctx.request.body

        try{
            // 操作数据库
            const res = await createUser(user_name,password)
            console.log(res)
            // 返回结果
            // ctx.body = ctx.request.body
            ctx.body = {
                code: 0,
                message: '用户注册成功',
                result:{
                    id: res.id,
                    user_name: res.user_name,
                }
            }       
        }catch(err){
            console.log(err)
            ctx.app.emit('error',userRegisterError,ctx)
        }
        
    }

    async login(ctx,next){
        const {user_name} = ctx.request.body

        try{
            console.log(user_name,111)
            const {passwored, ...res} = await getUserInfo({user_name})

            ctx.body = {
                code: 0,
                message: '用户登录成功',
                result: {
                    token: jwt.sign(res, JWT_SECRET, {expiresIn: '1d'}) //1d表示 token 1天后过期，10表示10秒后过期
                }
            }
        }catch{
            console.error('用户登录失败',err)
        }
    }

    async changePassword(ctx,next){
        // 1、获取数据
        const id = ctx.state.user.id
        const {password} = JSON.parse(ctx.request.body)

        console.log(id,password)

        // 2、操作数据库
        if(await updateById({id, password})){
            // 3、返回结果
            ctx.body = {
                code: 0,
                message: '修改密码成功',
                result: '',            
            }
        }else{
            ctx.body = {
                code: 10007,
                message: '修改密码失败',
                result: '',
            }
        }

        
    }
}



module.exports = new UserController()